<?php

namespace api\energy\factory\facade;

use api\energy\factory\water\WaterMeterControl;
use api\energy\factory\water\WaterMeterRealtimeRead;
use api\energy\factory\water\QueryWaterMeterDayFreeze;
use api\energy\factory\water\QueryWaterMeterDetail;
use api\energy\factory\water\QueryWaterMeterList;

class Water
{

    /**
     * 查询水表列表
     *
     * @param int|null $page 页码
     * @param int|null $limit 每页数量
     * @return QueryWaterMeterList
     */
    public static function queryWaterMeterList(int $page = null, int $limit = null): QueryWaterMeterList
    {
        return (new QueryWaterMeterList($page, $limit));
    }

    /**
     * 查询水表详情
     *
     * @param string $address 水表地址
     * @return QueryWaterMeterDetail
     */
    public static function queryWaterMeterDetail(string $address = ''): QueryWaterMeterDetail
    {
        return (new QueryWaterMeterDetail($address));
    }

    /**
     * 查询水表日冻结
     *
     * @param string $startTime 开始日期
     * @param string $endTime 结束日期
     * @return QueryWaterMeterDayFreeze
     */
    public static function queryWaterMeterDayFreeze(string $startTime, string $endTime): QueryWaterMeterDayFreeze
    {
        return (new QueryWaterMeterDayFreeze($startTime, $endTime));
    }

    /**
     * 水表控制
     *
     * @param string $address 水表地址
     * @param int|null $type 操作类型 1: 查询状态 2: 开阀 3: 关阀
     * @return WaterMeterControl
     */
    public static function waterMeterControl(string $address = '', int $type = null): WaterMeterControl
    {
        return (new WaterMeterControl($address, $type));
    }

    /**
     * 水表实时抄表
     *
     * @param string $address 水表地址
     * @param int|null $type 抄表类型 1水表读数
     * @return WaterMeterRealtimeRead
     */
    public static function waterMeterRealtimeRead(string $address = '', int $type = null): WaterMeterRealtimeRead
    {
        return (new WaterMeterRealtimeRead($address, $type));
    }

}